
// Generated from CStruct.g4 by ANTLR 4.13.2


#include "CStructLexer.h"


using namespace antlr4;



using namespace antlr4;

namespace {

struct CStructLexerStaticData final {
  CStructLexerStaticData(std::vector<std::string> ruleNames,
                          std::vector<std::string> channelNames,
                          std::vector<std::string> modeNames,
                          std::vector<std::string> literalNames,
                          std::vector<std::string> symbolicNames)
      : ruleNames(std::move(ruleNames)), channelNames(std::move(channelNames)),
        modeNames(std::move(modeNames)), literalNames(std::move(literalNames)),
        symbolicNames(std::move(symbolicNames)),
        vocabulary(this->literalNames, this->symbolicNames) {}

  CStructLexerStaticData(const CStructLexerStaticData&) = delete;
  CStructLexerStaticData(CStructLexerStaticData&&) = delete;
  CStructLexerStaticData& operator=(const CStructLexerStaticData&) = delete;
  CStructLexerStaticData& operator=(CStructLexerStaticData&&) = delete;

  std::vector<antlr4::dfa::DFA> decisionToDFA;
  antlr4::atn::PredictionContextCache sharedContextCache;
  const std::vector<std::string> ruleNames;
  const std::vector<std::string> channelNames;
  const std::vector<std::string> modeNames;
  const std::vector<std::string> literalNames;
  const std::vector<std::string> symbolicNames;
  const antlr4::dfa::Vocabulary vocabulary;
  antlr4::atn::SerializedATNView serializedATN;
  std::unique_ptr<antlr4::atn::ATN> atn;
};

::antlr4::internal::OnceFlag cstructlexerLexerOnceFlag;
#if ANTLR4_USE_THREAD_LOCAL_CACHE
static thread_local
#endif
std::unique_ptr<CStructLexerStaticData> cstructlexerLexerStaticData = nullptr;

void cstructlexerLexerInitialize() {
#if ANTLR4_USE_THREAD_LOCAL_CACHE
  if (cstructlexerLexerStaticData != nullptr) {
    return;
  }
#else
  assert(cstructlexerLexerStaticData == nullptr);
#endif
  auto staticData = std::make_unique<CStructLexerStaticData>(
    std::vector<std::string>{
      "T__0", "Char", "Const", "Double", "Enum", "Float", "Int", "Long", 
      "TypeDef", "AlignAs", "SizeOf", "Short", "Signed", "Struct", "Union", 
      "Unsigned", "Void", "QuestionMark", "LeftParen", "RightParen", "DoubleLeftBracket", 
      "LeftBracket", "DoubleRightBracket", "RightBracket", "LeftBrace", 
      "RightBrace", "LeftShift", "RightShift", "Plus", "PlusPlus", "Minus", 
      "MinusMinus", "Star", "Div", "Mod", "And", "Or", "Caret", "Tilde", 
      "Colon", "Semi", "Comma", "Identifier", "IdentifierNondigit", "Nondigit", 
      "Digit", "HexQuad", "IntegerConstant", "BinaryConstant", "DecimalConstant", 
      "OctalConstant", "HexadecimalConstant", "HexadecimalPrefix", "NonzeroDigit", 
      "OctalDigit", "HexadecimalDigit", "IntegerSuffix", "UnsignedSuffix", 
      "LongSuffix", "LongLongSuffix", "FractionalConstant", "ExponentPart", 
      "Sign", "DigitSequence", "BinaryExponentPart", "HexadecimalDigitSequence", 
      "StringLiteral", "SCharSequence", "CChar", "EscapeSequence", "SimpleEscapeSequence", 
      "OctalEscapeSequence", "HexadecimalEscapeSequence", "MultiLineMacroDefine", 
      "MultiLineMacro", "DirectiveInclude", "DirectiveDefine", "Directive", 
      "Whitespace", "Newline", "LINE_CONTINUATION", "BlockComment", "LineComment"
    },
    std::vector<std::string>{
      "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
    },
    std::vector<std::string>{
      "DEFAULT_MODE"
    },
    std::vector<std::string>{
      "", "'='", "'char'", "'const'", "'double'", "'enum'", "'float'", "'int'", 
      "'long'", "'typedef'", "'alignas'", "'sizeof'", "'short'", "'signed'", 
      "'struct'", "'union'", "'unsigned'", "'void'", "'\\u003F'", "'('", 
      "')'", "'[['", "'['", "']]'", "']'", "'{'", "'}'", "'<<'", "'>>'", 
      "'+'", "'++'", "'-'", "'--'", "'*'", "'/'", "'%'", "'&'", "'|'", "'^'", 
      "'~'", "':'", "';'", "','"
    },
    std::vector<std::string>{
      "", "", "Char", "Const", "Double", "Enum", "Float", "Int", "Long", 
      "TypeDef", "AlignAs", "SizeOf", "Short", "Signed", "Struct", "Union", 
      "Unsigned", "Void", "QuestionMark", "LeftParen", "RightParen", "DoubleLeftBracket", 
      "LeftBracket", "DoubleRightBracket", "RightBracket", "LeftBrace", 
      "RightBrace", "LeftShift", "RightShift", "Plus", "PlusPlus", "Minus", 
      "MinusMinus", "Star", "Div", "Mod", "And", "Or", "Caret", "Tilde", 
      "Colon", "Semi", "Comma", "Identifier", "IntegerConstant", "StringLiteral", 
      "MultiLineMacroDefine", "MultiLineMacro", "DirectiveInclude", "DirectiveDefine", 
      "Directive", "Whitespace", "Newline", "LINE_CONTINUATION", "BlockComment", 
      "LineComment"
    }
  );
  static const int32_t serializedATNSegment[] = {
  	4,0,55,640,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,
  	6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,
  	7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,
  	7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,
  	7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,
  	7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,
  	7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,
  	7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,
  	7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,
  	7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,
  	7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,
  	7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,1,0,1,0,1,1,1,
  	1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,4,
  	1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,
  	7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,
  	1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,1,12,
  	1,12,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,
  	1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,
  	1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,20,
  	1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,24,1,24,1,25,1,25,1,26,1,26,1,26,
  	1,27,1,27,1,27,1,28,1,28,1,29,1,29,1,29,1,30,1,30,1,31,1,31,1,31,1,32,
  	1,32,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,39,
  	1,39,1,40,1,40,1,41,1,41,1,42,1,42,1,42,5,42,330,8,42,10,42,12,42,333,
  	9,42,1,43,1,43,1,44,1,44,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,47,1,47,
  	3,47,348,8,47,1,47,1,47,3,47,352,8,47,1,47,1,47,3,47,356,8,47,1,47,1,
  	47,1,47,1,47,1,47,3,47,363,8,47,1,48,1,48,1,48,4,48,368,8,48,11,48,12,
  	48,369,1,49,1,49,5,49,374,8,49,10,49,12,49,377,9,49,1,50,1,50,5,50,381,
  	8,50,10,50,12,50,384,9,50,1,51,1,51,4,51,388,8,51,11,51,12,51,389,1,52,
  	1,52,1,52,1,53,1,53,1,54,1,54,1,55,1,55,1,56,1,56,3,56,403,8,56,1,56,
  	1,56,1,56,1,56,1,56,3,56,410,8,56,1,56,1,56,3,56,414,8,56,3,56,416,8,
  	56,1,57,1,57,1,58,1,58,1,59,1,59,1,59,1,59,3,59,426,8,59,1,60,3,60,429,
  	8,60,1,60,1,60,1,60,1,60,1,60,3,60,436,8,60,1,61,1,61,3,61,440,8,61,1,
  	61,1,61,1,62,1,62,1,63,4,63,447,8,63,11,63,12,63,448,1,64,1,64,3,64,453,
  	8,64,1,64,1,64,1,65,4,65,458,8,65,11,65,12,65,459,1,66,1,66,3,66,464,
  	8,66,1,66,1,66,1,67,4,67,469,8,67,11,67,12,67,470,1,68,1,68,3,68,475,
  	8,68,1,69,1,69,1,69,3,69,480,8,69,1,70,1,70,1,70,1,71,1,71,1,71,3,71,
  	488,8,71,1,71,3,71,491,8,71,1,72,1,72,1,72,1,72,4,72,497,8,72,11,72,12,
  	72,498,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,5,73,510,8,73,10,
  	73,12,73,513,9,73,1,73,1,73,3,73,517,8,73,1,73,4,73,520,8,73,11,73,12,
  	73,521,1,73,4,73,525,8,73,11,73,12,73,526,1,74,1,74,1,74,5,74,532,8,74,
  	10,74,12,74,535,9,74,1,74,1,74,3,74,539,8,74,1,74,4,74,542,8,74,11,74,
  	12,74,543,1,74,4,74,547,8,74,11,74,12,74,548,1,74,1,74,1,75,1,75,1,75,
  	1,75,1,75,1,75,1,75,1,75,1,75,1,75,5,75,563,8,75,10,75,12,75,566,9,75,
  	1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,5,76,577,8,76,10,76,12,76,
  	580,9,76,1,77,1,77,1,77,5,77,585,8,77,10,77,12,77,588,9,77,1,77,1,77,
  	1,78,4,78,593,8,78,11,78,12,78,594,1,78,1,78,1,79,1,79,3,79,601,8,79,
  	1,79,3,79,604,8,79,1,79,1,79,1,80,1,80,3,80,610,8,80,1,80,1,80,1,80,1,
  	80,1,81,1,81,1,81,1,81,5,81,620,8,81,10,81,12,81,623,9,81,1,81,1,81,1,
  	81,1,81,1,81,1,82,1,82,1,82,1,82,5,82,634,8,82,10,82,12,82,637,9,82,1,
  	82,1,82,3,511,533,621,0,83,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,
  	10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,
  	43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,
  	33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,0,89,
  	0,91,0,93,0,95,44,97,0,99,0,101,0,103,0,105,0,107,0,109,0,111,0,113,0,
  	115,0,117,0,119,0,121,0,123,0,125,0,127,0,129,0,131,0,133,45,135,0,137,
  	0,139,0,141,0,143,0,145,0,147,46,149,47,151,48,153,49,155,50,157,51,159,
  	52,161,53,163,54,165,55,1,0,19,3,0,65,90,95,95,97,122,1,0,48,57,2,0,66,
  	66,98,98,1,0,48,49,2,0,88,88,120,120,1,0,49,57,1,0,48,55,3,0,48,57,65,
  	70,97,102,2,0,85,85,117,117,2,0,76,76,108,108,2,0,69,69,101,101,2,0,43,
  	43,45,45,2,0,80,80,112,112,4,0,10,10,13,13,39,39,92,92,10,0,34,34,39,
  	39,63,63,92,92,97,98,102,102,110,110,114,114,116,116,118,118,1,0,10,10,
  	2,0,9,9,32,32,1,0,13,13,2,0,10,10,13,13,662,0,1,1,0,0,0,0,3,1,0,0,0,0,
  	5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,
  	0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,
  	0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,
  	1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,
  	0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,
  	0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,
  	1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,
  	0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,95,1,0,0,0,0,133,1,0,0,0,
  	0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,
  	0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,
  	1,167,1,0,0,0,3,169,1,0,0,0,5,174,1,0,0,0,7,180,1,0,0,0,9,187,1,0,0,0,
  	11,192,1,0,0,0,13,198,1,0,0,0,15,202,1,0,0,0,17,207,1,0,0,0,19,215,1,
  	0,0,0,21,223,1,0,0,0,23,230,1,0,0,0,25,236,1,0,0,0,27,243,1,0,0,0,29,
  	250,1,0,0,0,31,256,1,0,0,0,33,265,1,0,0,0,35,270,1,0,0,0,37,272,1,0,0,
  	0,39,274,1,0,0,0,41,276,1,0,0,0,43,279,1,0,0,0,45,281,1,0,0,0,47,284,
  	1,0,0,0,49,286,1,0,0,0,51,288,1,0,0,0,53,290,1,0,0,0,55,293,1,0,0,0,57,
  	296,1,0,0,0,59,298,1,0,0,0,61,301,1,0,0,0,63,303,1,0,0,0,65,306,1,0,0,
  	0,67,308,1,0,0,0,69,310,1,0,0,0,71,312,1,0,0,0,73,314,1,0,0,0,75,316,
  	1,0,0,0,77,318,1,0,0,0,79,320,1,0,0,0,81,322,1,0,0,0,83,324,1,0,0,0,85,
  	326,1,0,0,0,87,334,1,0,0,0,89,336,1,0,0,0,91,338,1,0,0,0,93,340,1,0,0,
  	0,95,362,1,0,0,0,97,364,1,0,0,0,99,371,1,0,0,0,101,378,1,0,0,0,103,385,
  	1,0,0,0,105,391,1,0,0,0,107,394,1,0,0,0,109,396,1,0,0,0,111,398,1,0,0,
  	0,113,415,1,0,0,0,115,417,1,0,0,0,117,419,1,0,0,0,119,425,1,0,0,0,121,
  	435,1,0,0,0,123,437,1,0,0,0,125,443,1,0,0,0,127,446,1,0,0,0,129,450,1,
  	0,0,0,131,457,1,0,0,0,133,461,1,0,0,0,135,468,1,0,0,0,137,474,1,0,0,0,
  	139,479,1,0,0,0,141,481,1,0,0,0,143,484,1,0,0,0,145,492,1,0,0,0,147,500,
  	1,0,0,0,149,528,1,0,0,0,151,552,1,0,0,0,153,567,1,0,0,0,155,581,1,0,0,
  	0,157,592,1,0,0,0,159,603,1,0,0,0,161,607,1,0,0,0,163,615,1,0,0,0,165,
  	629,1,0,0,0,167,168,5,61,0,0,168,2,1,0,0,0,169,170,5,99,0,0,170,171,5,
  	104,0,0,171,172,5,97,0,0,172,173,5,114,0,0,173,4,1,0,0,0,174,175,5,99,
  	0,0,175,176,5,111,0,0,176,177,5,110,0,0,177,178,5,115,0,0,178,179,5,116,
  	0,0,179,6,1,0,0,0,180,181,5,100,0,0,181,182,5,111,0,0,182,183,5,117,0,
  	0,183,184,5,98,0,0,184,185,5,108,0,0,185,186,5,101,0,0,186,8,1,0,0,0,
  	187,188,5,101,0,0,188,189,5,110,0,0,189,190,5,117,0,0,190,191,5,109,0,
  	0,191,10,1,0,0,0,192,193,5,102,0,0,193,194,5,108,0,0,194,195,5,111,0,
  	0,195,196,5,97,0,0,196,197,5,116,0,0,197,12,1,0,0,0,198,199,5,105,0,0,
  	199,200,5,110,0,0,200,201,5,116,0,0,201,14,1,0,0,0,202,203,5,108,0,0,
  	203,204,5,111,0,0,204,205,5,110,0,0,205,206,5,103,0,0,206,16,1,0,0,0,
  	207,208,5,116,0,0,208,209,5,121,0,0,209,210,5,112,0,0,210,211,5,101,0,
  	0,211,212,5,100,0,0,212,213,5,101,0,0,213,214,5,102,0,0,214,18,1,0,0,
  	0,215,216,5,97,0,0,216,217,5,108,0,0,217,218,5,105,0,0,218,219,5,103,
  	0,0,219,220,5,110,0,0,220,221,5,97,0,0,221,222,5,115,0,0,222,20,1,0,0,
  	0,223,224,5,115,0,0,224,225,5,105,0,0,225,226,5,122,0,0,226,227,5,101,
  	0,0,227,228,5,111,0,0,228,229,5,102,0,0,229,22,1,0,0,0,230,231,5,115,
  	0,0,231,232,5,104,0,0,232,233,5,111,0,0,233,234,5,114,0,0,234,235,5,116,
  	0,0,235,24,1,0,0,0,236,237,5,115,0,0,237,238,5,105,0,0,238,239,5,103,
  	0,0,239,240,5,110,0,0,240,241,5,101,0,0,241,242,5,100,0,0,242,26,1,0,
  	0,0,243,244,5,115,0,0,244,245,5,116,0,0,245,246,5,114,0,0,246,247,5,117,
  	0,0,247,248,5,99,0,0,248,249,5,116,0,0,249,28,1,0,0,0,250,251,5,117,0,
  	0,251,252,5,110,0,0,252,253,5,105,0,0,253,254,5,111,0,0,254,255,5,110,
  	0,0,255,30,1,0,0,0,256,257,5,117,0,0,257,258,5,110,0,0,258,259,5,115,
  	0,0,259,260,5,105,0,0,260,261,5,103,0,0,261,262,5,110,0,0,262,263,5,101,
  	0,0,263,264,5,100,0,0,264,32,1,0,0,0,265,266,5,118,0,0,266,267,5,111,
  	0,0,267,268,5,105,0,0,268,269,5,100,0,0,269,34,1,0,0,0,270,271,5,63,0,
  	0,271,36,1,0,0,0,272,273,5,40,0,0,273,38,1,0,0,0,274,275,5,41,0,0,275,
  	40,1,0,0,0,276,277,5,91,0,0,277,278,5,91,0,0,278,42,1,0,0,0,279,280,5,
  	91,0,0,280,44,1,0,0,0,281,282,5,93,0,0,282,283,5,93,0,0,283,46,1,0,0,
  	0,284,285,5,93,0,0,285,48,1,0,0,0,286,287,5,123,0,0,287,50,1,0,0,0,288,
  	289,5,125,0,0,289,52,1,0,0,0,290,291,5,60,0,0,291,292,5,60,0,0,292,54,
  	1,0,0,0,293,294,5,62,0,0,294,295,5,62,0,0,295,56,1,0,0,0,296,297,5,43,
  	0,0,297,58,1,0,0,0,298,299,5,43,0,0,299,300,5,43,0,0,300,60,1,0,0,0,301,
  	302,5,45,0,0,302,62,1,0,0,0,303,304,5,45,0,0,304,305,5,45,0,0,305,64,
  	1,0,0,0,306,307,5,42,0,0,307,66,1,0,0,0,308,309,5,47,0,0,309,68,1,0,0,
  	0,310,311,5,37,0,0,311,70,1,0,0,0,312,313,5,38,0,0,313,72,1,0,0,0,314,
  	315,5,124,0,0,315,74,1,0,0,0,316,317,5,94,0,0,317,76,1,0,0,0,318,319,
  	5,126,0,0,319,78,1,0,0,0,320,321,5,58,0,0,321,80,1,0,0,0,322,323,5,59,
  	0,0,323,82,1,0,0,0,324,325,5,44,0,0,325,84,1,0,0,0,326,331,3,87,43,0,
  	327,330,3,87,43,0,328,330,3,91,45,0,329,327,1,0,0,0,329,328,1,0,0,0,330,
  	333,1,0,0,0,331,329,1,0,0,0,331,332,1,0,0,0,332,86,1,0,0,0,333,331,1,
  	0,0,0,334,335,3,89,44,0,335,88,1,0,0,0,336,337,7,0,0,0,337,90,1,0,0,0,
  	338,339,7,1,0,0,339,92,1,0,0,0,340,341,3,111,55,0,341,342,3,111,55,0,
  	342,343,3,111,55,0,343,344,3,111,55,0,344,94,1,0,0,0,345,347,3,99,49,
  	0,346,348,3,113,56,0,347,346,1,0,0,0,347,348,1,0,0,0,348,363,1,0,0,0,
  	349,351,3,101,50,0,350,352,3,113,56,0,351,350,1,0,0,0,351,352,1,0,0,0,
  	352,363,1,0,0,0,353,355,3,103,51,0,354,356,3,113,56,0,355,354,1,0,0,0,
  	355,356,1,0,0,0,356,363,1,0,0,0,357,363,3,97,48,0,358,359,5,39,0,0,359,
  	360,3,137,68,0,360,361,5,39,0,0,361,363,1,0,0,0,362,345,1,0,0,0,362,349,
  	1,0,0,0,362,353,1,0,0,0,362,357,1,0,0,0,362,358,1,0,0,0,363,96,1,0,0,
  	0,364,365,5,48,0,0,365,367,7,2,0,0,366,368,7,3,0,0,367,366,1,0,0,0,368,
  	369,1,0,0,0,369,367,1,0,0,0,369,370,1,0,0,0,370,98,1,0,0,0,371,375,3,
  	107,53,0,372,374,3,91,45,0,373,372,1,0,0,0,374,377,1,0,0,0,375,373,1,
  	0,0,0,375,376,1,0,0,0,376,100,1,0,0,0,377,375,1,0,0,0,378,382,5,48,0,
  	0,379,381,3,109,54,0,380,379,1,0,0,0,381,384,1,0,0,0,382,380,1,0,0,0,
  	382,383,1,0,0,0,383,102,1,0,0,0,384,382,1,0,0,0,385,387,3,105,52,0,386,
  	388,3,111,55,0,387,386,1,0,0,0,388,389,1,0,0,0,389,387,1,0,0,0,389,390,
  	1,0,0,0,390,104,1,0,0,0,391,392,5,48,0,0,392,393,7,4,0,0,393,106,1,0,
  	0,0,394,395,7,5,0,0,395,108,1,0,0,0,396,397,7,6,0,0,397,110,1,0,0,0,398,
  	399,7,7,0,0,399,112,1,0,0,0,400,402,3,115,57,0,401,403,3,117,58,0,402,
  	401,1,0,0,0,402,403,1,0,0,0,403,416,1,0,0,0,404,405,3,115,57,0,405,406,
  	3,119,59,0,406,416,1,0,0,0,407,409,3,117,58,0,408,410,3,115,57,0,409,
  	408,1,0,0,0,409,410,1,0,0,0,410,416,1,0,0,0,411,413,3,119,59,0,412,414,
  	3,115,57,0,413,412,1,0,0,0,413,414,1,0,0,0,414,416,1,0,0,0,415,400,1,
  	0,0,0,415,404,1,0,0,0,415,407,1,0,0,0,415,411,1,0,0,0,416,114,1,0,0,0,
  	417,418,7,8,0,0,418,116,1,0,0,0,419,420,7,9,0,0,420,118,1,0,0,0,421,422,
  	5,108,0,0,422,426,5,108,0,0,423,424,5,76,0,0,424,426,5,76,0,0,425,421,
  	1,0,0,0,425,423,1,0,0,0,426,120,1,0,0,0,427,429,3,127,63,0,428,427,1,
  	0,0,0,428,429,1,0,0,0,429,430,1,0,0,0,430,431,5,46,0,0,431,436,3,127,
  	63,0,432,433,3,127,63,0,433,434,5,46,0,0,434,436,1,0,0,0,435,428,1,0,
  	0,0,435,432,1,0,0,0,436,122,1,0,0,0,437,439,7,10,0,0,438,440,3,125,62,
  	0,439,438,1,0,0,0,439,440,1,0,0,0,440,441,1,0,0,0,441,442,3,127,63,0,
  	442,124,1,0,0,0,443,444,7,11,0,0,444,126,1,0,0,0,445,447,3,91,45,0,446,
  	445,1,0,0,0,447,448,1,0,0,0,448,446,1,0,0,0,448,449,1,0,0,0,449,128,1,
  	0,0,0,450,452,7,12,0,0,451,453,3,125,62,0,452,451,1,0,0,0,452,453,1,0,
  	0,0,453,454,1,0,0,0,454,455,3,127,63,0,455,130,1,0,0,0,456,458,3,111,
  	55,0,457,456,1,0,0,0,458,459,1,0,0,0,459,457,1,0,0,0,459,460,1,0,0,0,
  	460,132,1,0,0,0,461,463,5,34,0,0,462,464,3,135,67,0,463,462,1,0,0,0,463,
  	464,1,0,0,0,464,465,1,0,0,0,465,466,5,34,0,0,466,134,1,0,0,0,467,469,
  	3,137,68,0,468,467,1,0,0,0,469,470,1,0,0,0,470,468,1,0,0,0,470,471,1,
  	0,0,0,471,136,1,0,0,0,472,475,8,13,0,0,473,475,3,139,69,0,474,472,1,0,
  	0,0,474,473,1,0,0,0,475,138,1,0,0,0,476,480,3,141,70,0,477,480,3,143,
  	71,0,478,480,3,145,72,0,479,476,1,0,0,0,479,477,1,0,0,0,479,478,1,0,0,
  	0,480,140,1,0,0,0,481,482,5,92,0,0,482,483,7,14,0,0,483,142,1,0,0,0,484,
  	485,5,92,0,0,485,487,3,109,54,0,486,488,3,109,54,0,487,486,1,0,0,0,487,
  	488,1,0,0,0,488,490,1,0,0,0,489,491,3,109,54,0,490,489,1,0,0,0,490,491,
  	1,0,0,0,491,144,1,0,0,0,492,493,5,92,0,0,493,494,5,120,0,0,494,496,1,
  	0,0,0,495,497,3,111,55,0,496,495,1,0,0,0,497,498,1,0,0,0,498,496,1,0,
  	0,0,498,499,1,0,0,0,499,146,1,0,0,0,500,501,5,35,0,0,501,502,5,100,0,
  	0,502,503,5,101,0,0,503,504,5,102,0,0,504,505,5,105,0,0,505,506,5,110,
  	0,0,506,507,5,101,0,0,507,519,1,0,0,0,508,510,8,15,0,0,509,508,1,0,0,
  	0,510,513,1,0,0,0,511,512,1,0,0,0,511,509,1,0,0,0,512,514,1,0,0,0,513,
  	511,1,0,0,0,514,516,5,92,0,0,515,517,5,13,0,0,516,515,1,0,0,0,516,517,
  	1,0,0,0,517,518,1,0,0,0,518,520,5,10,0,0,519,511,1,0,0,0,520,521,1,0,
  	0,0,521,519,1,0,0,0,521,522,1,0,0,0,522,524,1,0,0,0,523,525,8,15,0,0,
  	524,523,1,0,0,0,525,526,1,0,0,0,526,524,1,0,0,0,526,527,1,0,0,0,527,148,
  	1,0,0,0,528,529,5,35,0,0,529,541,3,85,42,0,530,532,8,15,0,0,531,530,1,
  	0,0,0,532,535,1,0,0,0,533,534,1,0,0,0,533,531,1,0,0,0,534,536,1,0,0,0,
  	535,533,1,0,0,0,536,538,5,92,0,0,537,539,5,13,0,0,538,537,1,0,0,0,538,
  	539,1,0,0,0,539,540,1,0,0,0,540,542,5,10,0,0,541,533,1,0,0,0,542,543,
  	1,0,0,0,543,541,1,0,0,0,543,544,1,0,0,0,544,546,1,0,0,0,545,547,8,15,
  	0,0,546,545,1,0,0,0,547,548,1,0,0,0,548,546,1,0,0,0,548,549,1,0,0,0,549,
  	550,1,0,0,0,550,551,6,74,0,0,551,150,1,0,0,0,552,553,5,35,0,0,553,554,
  	5,105,0,0,554,555,5,110,0,0,555,556,5,99,0,0,556,557,5,108,0,0,557,558,
  	5,117,0,0,558,559,5,100,0,0,559,560,5,101,0,0,560,564,1,0,0,0,561,563,
  	8,15,0,0,562,561,1,0,0,0,563,566,1,0,0,0,564,562,1,0,0,0,564,565,1,0,
  	0,0,565,152,1,0,0,0,566,564,1,0,0,0,567,568,5,35,0,0,568,569,5,100,0,
  	0,569,570,5,101,0,0,570,571,5,102,0,0,571,572,5,105,0,0,572,573,5,110,
  	0,0,573,574,5,101,0,0,574,578,1,0,0,0,575,577,8,15,0,0,576,575,1,0,0,
  	0,577,580,1,0,0,0,578,576,1,0,0,0,578,579,1,0,0,0,579,154,1,0,0,0,580,
  	578,1,0,0,0,581,582,5,35,0,0,582,586,3,85,42,0,583,585,8,15,0,0,584,583,
  	1,0,0,0,585,588,1,0,0,0,586,584,1,0,0,0,586,587,1,0,0,0,587,589,1,0,0,
  	0,588,586,1,0,0,0,589,590,6,77,0,0,590,156,1,0,0,0,591,593,7,16,0,0,592,
  	591,1,0,0,0,593,594,1,0,0,0,594,592,1,0,0,0,594,595,1,0,0,0,595,596,1,
  	0,0,0,596,597,6,78,0,0,597,158,1,0,0,0,598,600,5,13,0,0,599,601,5,10,
  	0,0,600,599,1,0,0,0,600,601,1,0,0,0,601,604,1,0,0,0,602,604,5,10,0,0,
  	603,598,1,0,0,0,603,602,1,0,0,0,604,605,1,0,0,0,605,606,6,79,0,0,606,
  	160,1,0,0,0,607,609,5,92,0,0,608,610,7,17,0,0,609,608,1,0,0,0,609,610,
  	1,0,0,0,610,611,1,0,0,0,611,612,5,10,0,0,612,613,1,0,0,0,613,614,6,80,
  	0,0,614,162,1,0,0,0,615,616,5,47,0,0,616,617,5,42,0,0,617,621,1,0,0,0,
  	618,620,9,0,0,0,619,618,1,0,0,0,620,623,1,0,0,0,621,622,1,0,0,0,621,619,
  	1,0,0,0,622,624,1,0,0,0,623,621,1,0,0,0,624,625,5,42,0,0,625,626,5,47,
  	0,0,626,627,1,0,0,0,627,628,6,81,0,0,628,164,1,0,0,0,629,630,5,47,0,0,
  	630,631,5,47,0,0,631,635,1,0,0,0,632,634,8,18,0,0,633,632,1,0,0,0,634,
  	637,1,0,0,0,635,633,1,0,0,0,635,636,1,0,0,0,636,638,1,0,0,0,637,635,1,
  	0,0,0,638,639,6,82,0,0,639,166,1,0,0,0,46,0,329,331,347,351,355,362,369,
  	375,382,389,402,409,413,415,425,428,435,439,448,452,459,463,470,474,479,
  	487,490,498,511,516,521,526,533,538,543,548,564,578,586,594,600,603,609,
  	621,635,1,6,0,0
  };
  staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));

  antlr4::atn::ATNDeserializer deserializer;
  staticData->atn = deserializer.deserialize(staticData->serializedATN);

  const size_t count = staticData->atn->getNumberOfDecisions();
  staticData->decisionToDFA.reserve(count);
  for (size_t i = 0; i < count; i++) { 
    staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i);
  }
  cstructlexerLexerStaticData = std::move(staticData);
}

}

CStructLexer::CStructLexer(CharStream *input) : Lexer(input) {
  CStructLexer::initialize();
  _interpreter = new atn::LexerATNSimulator(this, *cstructlexerLexerStaticData->atn, cstructlexerLexerStaticData->decisionToDFA, cstructlexerLexerStaticData->sharedContextCache);
}

CStructLexer::~CStructLexer() {
  delete _interpreter;
}

std::string CStructLexer::getGrammarFileName() const {
  return "CStruct.g4";
}

const std::vector<std::string>& CStructLexer::getRuleNames() const {
  return cstructlexerLexerStaticData->ruleNames;
}

const std::vector<std::string>& CStructLexer::getChannelNames() const {
  return cstructlexerLexerStaticData->channelNames;
}

const std::vector<std::string>& CStructLexer::getModeNames() const {
  return cstructlexerLexerStaticData->modeNames;
}

const dfa::Vocabulary& CStructLexer::getVocabulary() const {
  return cstructlexerLexerStaticData->vocabulary;
}

antlr4::atn::SerializedATNView CStructLexer::getSerializedATN() const {
  return cstructlexerLexerStaticData->serializedATN;
}

const atn::ATN& CStructLexer::getATN() const {
  return *cstructlexerLexerStaticData->atn;
}




void CStructLexer::initialize() {
#if ANTLR4_USE_THREAD_LOCAL_CACHE
  cstructlexerLexerInitialize();
#else
  ::antlr4::internal::call_once(cstructlexerLexerOnceFlag, cstructlexerLexerInitialize);
#endif
}
